package com.platform.service.impl;

import com.platform.common.util.DateUtil;
import com.platform.common.util.StringUtil;
import com.platform.domain.model.FunctionExpand;
import com.platform.service.FunctionService;
import com.platform.dao.FunctionDao;
import com.platform.domain.model.Function;
import com.platform.service.common.Constants;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


/**
* Function
*
* User: wangyang
* DateTime: 2012-10-08 16:11:58
*
*/
@Service("functionService")
public class FunctionServiceImpl implements FunctionService {

    @Resource
    private FunctionDao functionDao;

    /**
     * 根据角色ID查询符合条件的功能菜单信息集合
     * @param roleId 角色ID
     * @return 功能菜单信息集合
     * @throws Exception
     */
    public List<FunctionExpand> selectMenuByRoleId(String roleId) throws Exception {
        Map<String, String> params = new HashMap<String, String>();
        params.put("roleId", roleId);
        params.put("functionType","0");
        return functionDao.selectRoleFunctions(params);
    }

    /**
     * 根据条件查询符合条件的功能信息集合
     * @param params 条件集合
     * @return 功能菜单信息集合
     * @throws Exception
     */
    public List<FunctionExpand> selectFunctions(Map<String, String> params) throws Exception {
        return functionDao.selectFunctions(params);
    }

    /**
     * 根据角色ID查询符合条件的功能信息集合
     * @param roleId 角色ID
     * @return 功能菜单信息集合
     * @throws Exception
     */
    public List<FunctionExpand> selectByRoleId(String roleId) throws Exception {
        Map<String, String> params = new HashMap<String, String>();
        params.put("roleId", roleId);
        return functionDao.selectFunctions(params);
    }

    /**
    *
    * 根据主键查询Function对象
    *
    * @param functionId
    * @return Function对象
    */
    @Override
    public Function selectByPrimaryKey(String functionId) throws Exception {
        return functionDao.selectByPrimaryKey(functionId);
    }

    /**
    *
    * 根据查询条件查询符合条件的Function对象
    *
    * @param function
    * @return 符合条件的Function对象List
    */
    @Override
    public List<Function> select(Function function) throws Exception {
        return functionDao.select(function);
    }

    /**
    *
    * 根据主键删除Function对象
    *
    * @param functionId
    * @return 影响条件数
    */
    @Override
    public int deleteByPrimaryKey(String functionId) throws Exception {
        return functionDao.deleteByPrimaryKey(functionId);
    }

    /**
    *
    * 根据条件删除符合条件的Function对象
    *
    * @param function
    * @return 影响条件数
    */
    @Override
    public int delete(Function function) throws Exception {
        return functionDao.delete(function);
    }

    /**
    *
    * 插入Function对象
    *
    * @param function
    * @return 影响条件数
    */
    @Override
    public int insert(Function function) throws Exception {
        function.setFunctionId(StringUtil.getUUID());
        function.setCreateTime(DateUtil.toDayString(DateUtil.YYYY_MM_DD_24H_MM_SS));
        function.setLogSign(Constants.IS_FALSE);
        return functionDao.insert(function);
    }

    /**
    *
    * 更新Function对象
    *
    * @param function
    * @return 影响条件数
    */
    @Override
    public int update(Function function) throws Exception {
        function.setUpdateTime(DateUtil.toDayString(DateUtil.YYYY_MM_DD_24H_MM_SS));
        return functionDao.update(function);
    }
}
